package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.form.impl.FootUserSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootUserService extends BaseService<FootUser> {
	/**
	 * 获取管理员的用户Id
	 * @return 管理员的id
	 */
	Long getAdminUserid();
	
	/**
	 * 获取除管理员的所有用户
	 * @return 用户列表
     * @param request
	 */
	List<FootUser> getAllWithoutAdmin(HttpServletRequest request);
	
	/**
	 * 三月不登录的删除账号
	 */
    void processUserNoLogin();
	
	/**
	 * 是否让用户登录系统
	 * @param issd 是否锁定
	 */
	void cancelLogin(boolean issd, HttpServletRequest request);
	
	/**
	 * 获取会员
	 * @return 用户列表
	 */
	List<FootUser> findGameIdIsNotNull();
	
	/**
	 * 根据用户名查找用户
	 * @param name 姓名
	 * @return 用户列表
	 */
	FootUser findUserByName(String name);
	
	/**
	 * 根据用户昵称查找用户
	 * @param nike 昵称
	 * @return 用户列表
	 */
	List<FootUser> findUsersByNike(String nike);
	
	/**
	 * 根据用户名和邮件查找用户
	 * @param name 姓名
	 * @param email 邮箱
	 * @return 用户
	 */
	FootUser findUserByNameEmail(String name, String email);
	
	/**
	 * 根据用户主键，更改用户权限
	 * @param user 用户
	 */
	void changeUser2Vip(FootUser user, HttpServletRequest request);

	/**
	 * 根据用户获取vip的等级加成
	 * @param user 用户
	 * @return 等级
	 */
	double getVipLevel(FootUser user, HttpServletRequest request);
	
	/**
	 * 修改新用户的信息到数据库
	 * @param user 用户
	 * @return 主键
	 */
	int saveNewUser(FootUser user, HttpServletRequest request);

    /**
     * 查询
     * @param entityname 实体类名
     * @param map 参数
     * @param footUserSearchForm 条件
     */
    void search(String entityname, Model map, FootUserSearchForm footUserSearchForm);

    /**
     * 删除所有
     * @param footUserSearchForm 条件
     * @param request 请求
     */
    void deleteAll(FootUserSearchForm footUserSearchForm, HttpServletRequest request);
}